<!DOCTYPE html>
<html>
<head><meta name="generator" content="Hexo 3.8.0">
  <meta charset="utf-8">
  <title>使用 Mattermost 作为远程办公的即时沟通工具 | 极客世界</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <link rel="shortcut icon" href="/favicon.ico">
  <link rel="stylesheet" href="/css/app.css">
  <!-- <link rel='stylesheet' href='http://fonts.useso.com/css?family=Source+Code+Pro'> -->
  
</head>
</html>
<body>
  <nav class="app-nav">
  
    
      <a href="/.">home</a>
    
  
    
      <a href="/archives">archive</a>
    
  
    
      <a href="/atom.xml">rss</a>
    
  
</nav>

  <main class="post">
  <article>
  <h1 class="article-title">
    <a href="/2020/02/11/Mattermost-as-im-workwith-gitlab/">使用 Mattermost 作为远程办公的即时沟通工具</a>
  </h1>

  <section class="article-meta">
    <p class="article-date">February 11 2020</p>
  </section>

  <section class="article-entry">
    <div id="content">

<div id="outline-container-org3f0cb66" class="outline-2">
<h2 id="org3f0cb66">&#x80CC;&#x666F;</h2>
<div class="outline-text-2" id="text-org3f0cb66">
<p>
2020&#x5E74;&#x7684;&#x75AB;&#x60C5;&#x975E;&#x5E38;&#x4E25;&#x5CFB;&#xFF0C;&#x4E3A;&#x4E86;&#x4FDD;&#x8BC1;&#x5927;&#x5BB6;&#x7684;&#x8EAB;&#x4F53;&#x5065;&#x5EB7;&#xFF0C;&#x5373;&#x4F7F;&#x5728;&#x590D;&#x5DE5;&#x7684;&#x524D;&#x63D0;&#x4E0B;&#x5728;&#x529E;&#x516C;&#x5BA4;&#x5185;&#x90E8;&#x4E5F;&#x5C3D;&#x91CF;&#x4F7F;&#x7528;&#x804A;&#x5929;&#x5DE5;&#x5177;&#x6C9F;&#x901A;&#x3002;&#x51CF;&#x5C11;&#x53E3;&#x5934;&#x6C9F;&#x901A;&#xFF0C;&#x907F;&#x514D;&#x553E;&#x6CAB;&#x4F20;&#x64AD;&#x3002;
</p>

<p>
&#x6211;&#x4EEC;&#x7684;&#x5DE5;&#x4F5C;&#x5E73;&#x53F0;&#x662F; Gitlab &#x3002;Gitlab &#x7528;&#x6765;&#x7BA1;&#x7406;&#x5177;&#x4F53;&#x4E8B;&#x52A1;&#xFF0C;&#x8DDF;&#x8E2A;&#x9879;&#x76EE;&#x63A8;&#x8FDB;&#x662F;&#x975E;&#x5E38;&#x597D;&#x7528;&#x7684;&#x3002;&#x4F46;&#x662F;&#x5982;&#x679C;&#x60F3;&#x5B9E;&#x65F6;&#x6C9F;&#x901A;&#x7684;&#x8BDD;&#x5C31;&#x6CA1;&#x90A3;&#x4E48;&#x4FBF;&#x5229;&#x3002;&#x6240;&#x4EE5;&#x9700;&#x8981;&#x627E;&#x5230;&#x4E00;&#x6B3E;&#x8865;&#x5145;&#x7684;&#x8F6F;&#x4EF6;&#xFF0C;&#x5728;&#x539F;&#x6709;&#x7684;&#x5F00;&#x53D1;&#x6D41;&#x7A0B;&#x57FA;&#x7840;&#x4E0A;&#x4F5C;&#x4E3A;&#x65E5;&#x5E38;&#x5373;&#x65F6;&#x6C9F;&#x901A;&#x7684;&#x8865;&#x5145;&#x3002;
</p>

<p>
&#x671F;&#x95F4;&#x8C03;&#x7814;&#x4E86;&#x4E00;&#x4E9B;&#x8F6F;&#x4EF6;&#x3002;&#x7C7B;&#x4F3C; Rocket.chat, Martix, &#x8FD9;&#x4E24;&#x6B3E;&#x8F6F;&#x4EF6;&#x7684;&#x7279;&#x70B9;&#x662F;&#x5F00;&#x6E90;&#x5E76;&#x4E14;&#x53EF;&#x4EE5;&#x81EA;&#x884C;&#x90E8;&#x7F72;&#xFF0C;&#x8FD9;&#x6837;&#x4E00;&#x6765;&#x5C31;&#x662F;&#x81EA;&#x5DF1;&#x4FDD;&#x7BA1;&#x81EA;&#x5DF1;&#x7684;&#x6570;&#x636E;&#x548C;&#x4FE1;&#x606F;&#x3002;&#x6570;&#x636E;&#x548C;&#x4FE1;&#x606F;&#x662F;&#x4E00;&#x5BB6;&#x516C;&#x53F8;&#x7684;&#x5173;&#x952E;&#xFF0C;&#x5C06;&#x9879;&#x76EE;&#x654F;&#x611F;&#x4FE1;&#x606F;&#x653E;&#x5230;&#x5FAE;&#x4FE1;&#xFF0C;&#x9489;&#x9489;&#xFF0C;Slack &#x6C9F;&#x901A;&#x662F;&#x4E0D;&#x660E;&#x667A;&#x7684;&#x3002;&#x5F53;&#x7136;&#x5982;&#x679C;&#x9879;&#x76EE;&#x662F;&#x4EE5;&#x5F00;&#x6E90;&#x7684;&#x65B9;&#x5F0F;&#x8FD0;&#x884C;&#xFF0C;&#x6240;&#x6709;&#x4FE1;&#x606F;&#x900F;&#x660E;&#x516C;&#x5F00;&#xFF0C;&#x90A3;&#x4E48;&#x5C31;&#x4E0D;&#x9700;&#x8981;&#x6709;&#x8FD9;&#x4E2A;&#x987E;&#x8651;&#x3002;
</p>

<p>
Martix &#x56E0;&#x4E3A; Mozilla &#x91C7;&#x7528;&#x6709;&#x4E86;&#x4E00;&#x5B9A;&#x77E5;&#x540D;&#x5EA6;&#xFF0C;&#x540C;&#x65F6;&#x67B6;&#x6784;&#x8BBE;&#x8BA1;&#x4E5F;&#x662F;&#x5206;&#x5E03;&#x5F0F;&#x7684;&#x3002;&#x672C;&#x6765;&#x5DF2;&#x7ECF;&#x6BD4;&#x8F83;&#x503E;&#x5411;&#x4E8E;&#x4F7F;&#x7528; Martix, &#x4E0D;&#x8FC7;&#x521A;&#x597D;&#x548C;&#x4E00;&#x4E2A;&#x670B;&#x53CB;&#x804A;&#x5929;&#x63D0;&#x8D77;&#x6765;&#x3002;&#x4ED6;&#x5EFA;&#x8BAE;&#x4F7F;&#x7528; Mattermost&#x3002;
</p>

<p>
&#x7ECF;&#x8FC7;&#x4E00;&#x4E9B;&#x529F;&#x80FD;&#x9A8C;&#x8BC1;&#x548C;&#x8C03;&#x7814;&#xFF0C;&#x6700;&#x7EC8;&#x91C7;&#x7528;&#x4E86; Mattermost&#x3002;&#x6709;&#x4E00;&#x4E2A;&#x975E;&#x5E38;&#x5173;&#x952E;&#x7684;&#x4F18;&#x70B9;&#xFF0C;&#x5C31;&#x662F;&#x53EF;&#x4EE5;&#x4F7F;&#x7528; Gitlab &#x7684;&#x8D26;&#x53F7;&#x76F4;&#x63A5;&#x767B;&#x5F55;&#x3002;
</p>
</div>
</div>

<div id="outline-container-orgd110a57" class="outline-2">
<h2 id="orgd110a57">&#x57FA;&#x672C;&#x529F;&#x80FD;&#x548C;&#x7279;&#x70B9;</h2>
<div class="outline-text-2" id="text-orgd110a57">
<ul class="org-ul">
<li><p>
&#x6709;&#x5F00;&#x6E90;&#x7684;&#x624B;&#x673A;&#x5BA2;&#x6237;&#x7AEF;&#x8F6F;&#x4EF6;&#xFF0C;&#x5E76;&#x4E14;&#x4E00;&#x76F4;&#x5728;&#x79EF;&#x6781;&#x66F4;&#x65B0;
</p>

<p>
Android &#x7684;&#x63A8;&#x9001;&#x6709;&#x4E9B;&#x9650;&#x5236;&#xFF0C;&#x4E0D;&#x8FC7;&#x5982;&#x679C;&#x518D;&#x81EA;&#x884C;&#x90E8;&#x7F72;&#x4E00;&#x4E2A;&#x63A8;&#x9001;&#x670D;&#x52A1;&#x5668;&#x7684;&#x8BDD;&#x5C31;&#x6CA1;&#x6709;&#x5F53;&#x524D;&#x7684;&#x9650;&#x5236;&#x3002;
</p></li>

<li><p>
&#x57FA;&#x672C;&#x4E0A;&#x7167;&#x642C; Slack &#x7684;&#x4EA7;&#x54C1;&#x903B;&#x8F91;
</p>

<p>
&#x4E0E;&#x5FAE;&#x4FE1;&#x5BF9;&#x6BD4;&#x7684;&#x8BDD;&#xFF0C;&#x80FD;&#x5C06;&#x8BA8;&#x8BBA;&#x7684;&#x5185;&#x5BB9;&#x6309;&#x7167;&#x9891;&#x9053;(&#x4E3B;&#x9898;)&#x5206;&#x5F00;&#x3002;
</p></li>

<li><p>
&#x652F;&#x6301; webhook, bot &#x8D26;&#x53F7;
</p>

<p>
&#x8FD9;&#x6837;&#x5C31;&#x8986;&#x76D6;&#x4E86;&#x4E00;&#x4E9B; auto devops &#x7684;&#x573A;&#x666F;&#x3002;&#x5C06;&#x539F;&#x6765;&#x547D;&#x4EE4;&#xFF0C;&#x7F51;&#x9875;&#x5F0F;&#x7684;&#x64CD;&#x4F5C;&#x53D8;&#x6210;&#x4F1A;&#x8BDD;&#x5F0F;&#x7684;&#x63A7;&#x5236;&#x3002;
</p>

<p>
&#x540C;&#x65F6;&#x548C; Gitlab &#x5BF9;&#x63A5;&#xFF0C;&#x53EF;&#x4EE5;&#x7B80;&#x5355;&#x7684;&#x521B;&#x5EFA;&#xFF0C;&#x8BFB;&#x53D6;&#x5DE5;&#x5355;&#x3002;
</p></li>
</ul>
</div>
</div>

<div id="outline-container-orgcf79939" class="outline-2">
<h2 id="orgcf79939">&#x90E8;&#x7F72;&#x65B9;&#x6CD5;</h2>
<div class="outline-text-2" id="text-orgcf79939">
<ul class="org-ul">
<li><p>
&#x9996;&#x5148;&#x9700;&#x8981;&#x51C6;&#x5907;&#x4E00;&#x4E2A;&#x8FD0;&#x884C;&#x73AF;&#x5883;
</p>

<p>
&#x6211;&#x73B0;&#x5728;&#x90FD;&#x4E60;&#x60EF;&#x4F7F;&#x7528; Docker &#x6765;&#x90E8;&#x7F72;&#x3002;&#x6240;&#x4EE5;&#x4F7F;&#x7528;&#x4E86; <a href="https://github.com/mattermost/mattermost-docker" target="_blank" rel="noopener">https://github.com/mattermost/mattermost-docker</a> &#x8FD9;&#x4E2A;&#x9879;&#x76EE;&#x6765;&#x90E8;&#x7F72;&#x3002;
</p>

<p>
&#x5F53;&#x524D;&#x4F7F;&#x7528;&#x7684;&#x73AF;&#x5883;&#xFF1A;
</p>

<ol class="org-ol">
<li>Ubuntu 19.04</li>

<li>Docker version 18.09.7, build 2d0083d</li>

<li>docker-compose version 1.21.0, build unknown</li>

<li>&#x9700;&#x8981;&#x4F7F;&#x7528;&#x670D;&#x52A1;&#x5668;&#x7684; 80,443 &#x7AEF;&#x53E3;</li>
</ol></li>

<li><p>
&#x5728;&#x5236;&#x4F5C;&#x955C;&#x50CF;&#x4E4B;&#x524D;&#x9700;&#x8981;&#x5BF9; Docker-compose &#x8FDB;&#x884C;&#x4FEE;&#x6539;
</p>

<p>
&#x56E0;&#x4E3A;&#x6211;&#x4F7F;&#x7528;&#x7684;&#x662F;&#x793E;&#x533A;&#x7248;&#xFF0C;&#x4F46;&#x662F;&#x4ED3;&#x5E93;&#x91CC;&#x9762;&#x9ED8;&#x8BA4;&#x7F16;&#x8BD1;&#x4F7F;&#x7528;&#x7684;&#x662F;&#x5546;&#x4E1A;&#x7248;&#x3002;
</p>

<div class="org-src-container">
<figure class="highlight"><table><tr><td class="code"><pre><span class="line">   app:
-    build: app
-      # uncomment following lines for team edition or change UID/GID
-      # args:
-      #   - edition=team
+    build:
+      # change `build:app` to `build:` and uncomment following lines for team edition or change UID/GID
+      context: app
+      args:
+         - edition=team</span><br></pre></td></tr></table></figure>
</div></li>
</ul>


<ul class="org-ul">
<li><p>
&#x5148;&#x6839;&#x636E;&#x8BF4;&#x660E;&#x6267;&#x884C;&#x4E00;&#x904D;&#x955C;&#x50CF;&#x5236;&#x4F5C;
</p>

<p>
docker-compose build
</p></li>

<li><p>
&#x542F;&#x52A8;&#x4E4B;&#x524D;&#x7684;&#x51C6;&#x5907;
</p>

<p>
&#x5982;&#x679C;&#x60F3;&#x8981;&#x542F;&#x7528; https, &#x90A3;&#x4E48;&#x9700;&#x8981;&#x6253;&#x5F00;
</p>

<div class="org-src-container">
<figure class="highlight"><table><tr><td class="code"><pre><span class="line">@@ -60,4 +61,4 @@ services:
       - /etc/localtime:/etc/localtime:ro
     # Uncomment for SSL
     # environment:
-    #  - MATTERMOST_ENABLE_SSL=true
+      - MATTERMOST_ENABLE_SSL=true</span><br></pre></td></tr></table></figure>
</div>

<p>
&#x540C;&#x65F6;&#x51C6;&#x5907;&#x597D;&#x8BC1;&#x4E66;&#x3002;&#x5982;&#x679C;&#x4F60;&#x4F7F;&#x7528;&#x7684;&#x662F; let&apos;s encrypt &#x751F;&#x6210;&#x7684;&#x8BC1;&#x4E66;
</p>

<div class="org-src-container">
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">cp ./volumes/web/cert/privkey.pem ./volumes/web/cert/key-no-password.pem</span><br></pre></td></tr></table></figure>
</div>

<p>
&#x56E0;&#x4E3A;&#x670D;&#x52A1;&#x9ED8;&#x8BA4;&#x627E;&#x5230;&#x7684;&#x662F; key-no-password.pem&#x3002;&#x5982;&#x679C;&#x6CA1;&#x6709;&#x8FD9;&#x4E2A;&#x6587;&#x4EF6;&#xFF0C;&#x5E76;&#x4E14;&#x5F00;&#x542F;&#x4E86; SSL &#x90A3;&#x4E48;&#x7F51;&#x7AD9;&#x542F;&#x52A8;&#x4E4B;&#x540E;&#x5C06;&#x65E0;&#x6CD5;&#x8BBF;&#x95EE;&#x3002;
</p>

<p>
&#x5982;&#x679C;&#x8981;&#x4FEE;&#x6539;&#x6570;&#x636E;&#x5E93;&#x8D26;&#x6237;&#x9ED8;&#x8BA4;&#x7684;&#x5BC6;&#x7801;&#xFF0C;&#x5219;&#x66F4;&#x65B0; MM_PASSWORD, POSTGRES_PASSWORD, MM_SQLSETTINGS_DATASOURCE &#x4E2D;&#x5BF9;&#x5E94;&#x7684;&#x5BC6;&#x7801;&#x914D;&#x7F6E;&#x3002;
</p>

<p>
&#x6211;&#x5728;&#x8E29;&#x5751;&#x7684;&#x8FC7;&#x7A0B;&#x4E2D;&#x6F0F;&#x4E86;&#x914D;&#x7F6E; MM_SQLSETTINGS_DATASOURCE&#x3002;&#x5C31;&#x5BFC;&#x81F4;&#x4E86;&#x542F;&#x52A8;&#x4E4B;&#x540E; app &#x7684; log &#x91CC;&#x9762;&#x63D0;&#x793A;&#x6570;&#x636E;&#x5E93;&#x5BC6;&#x7801;&#x9519;&#x8BEF;&#x7684;&#x95EE;&#x9898;&#x3002;
</p>

<p>
&#x540C;&#x65F6;&#x5E38;&#x89C4;&#x7684;&#x5751;&#x4E3A;:
</p>

<div class="org-src-container">
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">Error: failed to load configuration: failed to load: failed to persist required changes after load: failed to write file: open /mattermost/config/config.json:</span><br></pre></td></tr></table></figure>
</div>

<p>
&#x4EE5;&#x4E0A;&#x7684;&#x95EE;&#x9898;&#x539F;&#x56E0;&#x662F;&#x6CA1;&#x6709;&#x8BBE;&#x7F6E;: chown -R 2000:2000 ./volumes/app/mattermost/
</p></li>

<li><p>
&#x542F;&#x52A8;&#x670D;&#x52A1;&#x5668;
</p>

<p>
docker-compose up
</p></li>
</ul>
</div>
</div>


<div id="outline-container-org1b1964d" class="outline-2">
<h2 id="org1b1964d">&#x57FA;&#x672C;&#x914D;&#x7F6E;</h2>
<div class="outline-text-2" id="text-org1b1964d">
<ul class="org-ul">
<li><p>
&#x90AE;&#x4EF6;&#x914D;&#x7F6E;
</p>

<p>
&#x914D;&#x7F6E; SMTP &#x7684;&#x8D26;&#x53F7;&#xFF1A;
</p>


<div class="figure">
<p><img src="http://carlosupload.lejuhub.com/img/20200211143745.png">
</p>
</div>

<p>
&#x542F;&#x52A8;&#x90AE;&#x4EF6;&#x901A;&#x77E5;
</p>


<div class="figure">
<p><img src="http://carlosupload.lejuhub.com/img/20200211143846.png">
</p>
</div></li>

<li><p>
&#x4F7F;&#x7528; Gitlab &#x8D26;&#x53F7;&#x8FDB;&#x884C;&#x767B;&#x5F55;
</p>

<p>
&#x9996;&#x5148;&#xFF0C;&#x8FD9;&#x662F;&#x516C;&#x53F8;&#x5185;&#x90E8;&#x4F7F;&#x7528;&#x7684;&#x670D;&#x52A1;&#x3002;&#x6240;&#x4EE5;&#x6211;&#x7981;&#x6B62;&#x4E86;&#x6CE8;&#x518C;&#x529F;&#x80FD;&#x3002;
</p>

<p>
&#x5F00;&#x542F;&#x521B;&#x53F7;&#x521B;&#x5EFA;&#x9700;&#x8981;&#x542F;&#x52A8;&#x3002;&#x56E0;&#x4E3A;&#x901A;&#x8FC7; Gitlab &#x8D26;&#x53F7;&#x767B;&#x5F55;&#x7684;&#x673A;&#x5236;&#x662F;&#xFF1A;&#x8BFB;&#x53D6; Gitlab &#x7684;&#x4FE1;&#x606F;&#x5E76;&#x81EA;&#x52A8;&#x5728; Mattermost &#x4E0A;&#x65B0;&#x5EFA;&#x4E00;&#x4E2A;&#x8D26;&#x53F7;&#x3002;&#x5982;&#x679C;&#x8FD9;&#x91CC;&#x914D;&#x7F6E;&#x9519;&#x4E86;&#xFF0C;&#x8DF3;&#x8F6C;&#x767B;&#x5F55;&#x7684;&#x65F6;&#x5019;&#x4F1A;&#x63D0;&#x793A;&#x5931;&#x8D25;&#x3002;
</p>


<div class="figure">
<p><img src="http://carlosupload.lejuhub.com/img/20200211144021.png">
</p>
</div>

<p>
&#x540C;&#x65F6;&#x6211;&#x7981;&#x6B62;&#x4E86;&#x90AE;&#x4EF6;&#x548C;&#x8D26;&#x53F7;&#x767B;&#x5F55;
</p>


<div class="figure">
<p><img src="http://carlosupload.lejuhub.com/img/20200211144227.png">
</p>
</div>

<p>
&#x8FD9;&#x6837;&#x4E00;&#x6765;&#x7528;&#x6237;&#x6253;&#x5F00;&#x9875;&#x9762;&#xFF0C;&#x5C31;&#x53EA;&#x6709;&#x4E00;&#x4E2A;&#x767B;&#x5F55;&#x7684;&#x6309;&#x94AE;&#x3002;
</p>


<div class="figure">
<p><img src="http://carlosupload.lejuhub.com/img/20200211144908.png">
</p>
</div>

<p>
&#x4E0D;&#x4E00;&#x5B9A;&#x7F8E;&#x89C2;&#xFF0C;&#x4F46;&#x662F;&#x591F;&#x7528;&#x3002;
</p></li>
</ul>
</div>
</div>


<div id="outline-container-org66d4528" class="outline-2">
<h2 id="org66d4528">&#x4F7F;&#x7528;&#x603B;&#x7ED3;</h2>
<div class="outline-text-2" id="text-org66d4528">
<ol class="org-ol">
<li>&#x641C;&#x7D22;&#x9700;&#x8981;&#x6539;&#x8FDB;&#xFF0C;Gitlab &#x4E5F;&#x5B58;&#x5728;&#x540C;&#x6837;&#x7684;&#x95EE;&#x9898;&#x3002;&#x56E0;&#x4E3A;&#x8FD9;&#x662F;&#x897F;&#x6587;&#x56FD;&#x5BB6;&#x7684;&#x4EBA;&#x8BBE;&#x8BA1;&#x7684;&#xFF0C;&#x4ED6;&#x4EEC;&#x5728;&#x8003;&#x8651;&#x6700;&#x5C0F;&#x8F93;&#x5165;&#x5355;&#x4F4D;&#x6765;&#x89E6;&#x53D1;&#x641C;&#x7D22;&#x7684;&#x65F6;&#x5019;&#x662F;&#x4EE5;&#x5B57;&#x6BCD;&#x6765;&#x8BA1;&#x7B97;&#x957F;&#x5EA6;&#xFF0C;&#x4F46;&#x662F;&#x653E;&#x5230;&#x4E2D;&#x6587;&#x4E2D;&#x5C31;&#x4E0D;&#x591F;&#x4E86;&#x3002;&#x8981;&#x60F3;&#x8D77;&#x516D;&#x4E2A;&#x5B57;&#x624D;&#x80FD;&#x641C;&#x7D22;&#x5386;&#x53F2;&#x8BB0;&#x5F55;&#xFF0C;&#x51E0;&#x4E4E;&#x4E0D;&#x53EF;&#x80FD;&#x3002;&#x8FD9;&#x4E2A;&#x6211;&#x6253;&#x7B97;&#x6539;&#x8FDB;&#x3002;</li>
<li>&#x624B;&#x673A;&#x7AEF;&#x8FD8;&#x672A;&#x4F7F;&#x7528;&#xFF0C;&#x76EE;&#x524D;&#x4E3B;&#x529B;&#x662F;&#x5728; PC &#x7AEF;&#x3002;</li>
<li>&#x5C06;&#x4E3B;&#x9898;&#x4F5C;&#x4E3A;&#x9891;&#x9053;&#x5206;&#x5272;&#x5F00;&#xFF0C;&#x89E3;&#x51B3;&#x4E86;&#x5728;&#x5FAE;&#x4FE1;&#x4E0A;&#x6C9F;&#x901A;&#x5DE5;&#x4F5C;&#x4F4E;&#x6548;&#x7684;&#x95EE;&#x9898;&#xFF0C;&#x53C8;&#x4FDD;&#x8BC1;&#x4E86;&#x6570;&#x636E;&#x7684;&#x5B89;&#x5168;&#x6027;&#x3002;</li>
</ol>
</div>
</div>
</div>

  </section>
</article>

  <div class="sharing grid">
  <section class="profile grid-item grid">
    <img class="avatar" src="https://avatars0.githubusercontent.com/u/1055130?s=460&v=4" alt="avatar">
    <div class="grid-item">
      <p class="title"> 极客世界 </p>
      <p class="subtitle"> 乐聚机器人研发总监 | 黄怀贤 </p>
    <div>
  </div></div></section>

  <section class="share-btns">
      <!-- <p> share it if you like it~ </p> -->
      <!-- <a class="twitter-share-button" data-size="large" data-via="DrakeLeung" href="https://twitter.com/intent/tweet?text=v id=" content">

<di">
  Tweet
</di"></a>

<script>
  window.twttr = (function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0],
    t = window.twttr || {};
  if (d.getElementById(id)) return t;
  js = d.createElement(s);
  js.id = id;
  js.src = "https://platform.twitter.com/widgets.js";
  js.async = true;
  fjs.parentNode.insertBefore(js, fjs);

  t._e = [];
  t.ready = function(f) {
    t._e.push(f);
  };

  return t;
}(document, "script", "twitter-wjs"));
</script>
 -->
  </section>
</div>


  
</main>

</body>
</html>
